package de.sabram.upb.specs.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.sabram.upb.specs.services.ConGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalConParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_INT", "RULE_ANY_OTHER", "'='", "':'", "'::='", "'.'", "'//'", "'||'", "'/'", "'|'", "'['", "']'", "'('", "')'", "'*'", "'+'", "'&'", "'$'", "'@'"
    };
    public static final int RULE_ID=4;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=7;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=6;
    public static final int T__19=19;
    public static final int RULE_STRING=5;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=9;
    public static final int RULE_WS=8;

    // delegates
    // delegators


        public InternalConParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalConParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalConParser.tokenNames; }
    public String getGrammarFileName() { return "../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g"; }



     	private ConGrammarAccess grammarAccess;
     	
        public InternalConParser(TokenStream input, ConGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "ConSpec";	
       	}
       	
       	@Override
       	protected ConGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleConSpec"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:67:1: entryRuleConSpec returns [EObject current=null] : iv_ruleConSpec= ruleConSpec EOF ;
    public final EObject entryRuleConSpec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConSpec = null;


         
        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
        	
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:71:2: (iv_ruleConSpec= ruleConSpec EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:72:2: iv_ruleConSpec= ruleConSpec EOF
            {
             newCompositeNode(grammarAccess.getConSpecRule()); 
            pushFollow(FOLLOW_ruleConSpec_in_entryRuleConSpec81);
            iv_ruleConSpec=ruleConSpec();

            state._fsp--;

             current =iv_ruleConSpec; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConSpec91); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {

            	myHiddenTokenState.restore();

        }
        return current;
    }
    // $ANTLR end "entryRuleConSpec"


    // $ANTLR start "ruleConSpec"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:82:1: ruleConSpec returns [EObject current=null] : ( (lv_rules_0_0= ruleRule ) )* ;
    public final EObject ruleConSpec() throws RecognitionException {
        EObject current = null;

        EObject lv_rules_0_0 = null;


         enterRule(); 
        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:86:28: ( ( (lv_rules_0_0= ruleRule ) )* )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:87:1: ( (lv_rules_0_0= ruleRule ) )*
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:87:1: ( (lv_rules_0_0= ruleRule ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:88:1: (lv_rules_0_0= ruleRule )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:88:1: (lv_rules_0_0= ruleRule )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:89:3: lv_rules_0_0= ruleRule
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getConSpecAccess().getRulesRuleParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRule_in_ruleConSpec140);
            	    lv_rules_0_0=ruleRule();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getConSpecRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"rules",
            	            		lv_rules_0_0, 
            	            		"Rule");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {

            	myHiddenTokenState.restore();

        }
        return current;
    }
    // $ANTLR end "ruleConSpec"


    // $ANTLR start "entryRuleRule"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:116:1: entryRuleRule returns [EObject current=null] : iv_ruleRule= ruleRule EOF ;
    public final EObject entryRuleRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRule = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:117:2: (iv_ruleRule= ruleRule EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:118:2: iv_ruleRule= ruleRule EOF
            {
             newCompositeNode(grammarAccess.getRuleRule()); 
            pushFollow(FOLLOW_ruleRule_in_entryRuleRule180);
            iv_ruleRule=ruleRule();

            state._fsp--;

             current =iv_ruleRule; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRule190); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRule"


    // $ANTLR start "ruleRule"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:125:1: ruleRule returns [EObject current=null] : ( (this_ID_0= RULE_ID otherlv_1= '=' )? ( (lv_nonTerminal_2_0= ruleNonTerminal ) ) (otherlv_3= ':' | otherlv_4= '::=' ) ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= '.' ) ;
    public final EObject ruleRule() throws RecognitionException {
        EObject current = null;

        Token this_ID_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_nonTerminal_2_0 = null;

        EObject lv_rhs_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:128:28: ( ( (this_ID_0= RULE_ID otherlv_1= '=' )? ( (lv_nonTerminal_2_0= ruleNonTerminal ) ) (otherlv_3= ':' | otherlv_4= '::=' ) ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= '.' ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:129:1: ( (this_ID_0= RULE_ID otherlv_1= '=' )? ( (lv_nonTerminal_2_0= ruleNonTerminal ) ) (otherlv_3= ':' | otherlv_4= '::=' ) ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= '.' )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:129:1: ( (this_ID_0= RULE_ID otherlv_1= '=' )? ( (lv_nonTerminal_2_0= ruleNonTerminal ) ) (otherlv_3= ':' | otherlv_4= '::=' ) ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= '.' )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:129:2: (this_ID_0= RULE_ID otherlv_1= '=' )? ( (lv_nonTerminal_2_0= ruleNonTerminal ) ) (otherlv_3= ':' | otherlv_4= '::=' ) ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= '.'
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:129:2: (this_ID_0= RULE_ID otherlv_1= '=' )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==RULE_ID) ) {
                int LA2_1 = input.LA(2);

                if ( (LA2_1==11) ) {
                    alt2=1;
                }
            }
            switch (alt2) {
                case 1 :
                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:129:3: this_ID_0= RULE_ID otherlv_1= '='
                    {
                    this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule227); 
                     
                        newLeafNode(this_ID_0, grammarAccess.getRuleAccess().getIDTerminalRuleCall_0_0()); 
                        
                    otherlv_1=(Token)match(input,11,FOLLOW_11_in_ruleRule238); 

                        	newLeafNode(otherlv_1, grammarAccess.getRuleAccess().getEqualsSignKeyword_0_1());
                        

                    }
                    break;

            }

            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:137:3: ( (lv_nonTerminal_2_0= ruleNonTerminal ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:138:1: (lv_nonTerminal_2_0= ruleNonTerminal )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:138:1: (lv_nonTerminal_2_0= ruleNonTerminal )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:139:3: lv_nonTerminal_2_0= ruleNonTerminal
            {
             
            	        newCompositeNode(grammarAccess.getRuleAccess().getNonTerminalNonTerminalParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleNonTerminal_in_ruleRule261);
            lv_nonTerminal_2_0=ruleNonTerminal();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRuleRule());
            	        }
                   		set(
                   			current, 
                   			"nonTerminal",
                    		lv_nonTerminal_2_0, 
                    		"NonTerminal");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:155:2: (otherlv_3= ':' | otherlv_4= '::=' )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==12) ) {
                alt3=1;
            }
            else if ( (LA3_0==13) ) {
                alt3=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }
            switch (alt3) {
                case 1 :
                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:155:4: otherlv_3= ':'
                    {
                    otherlv_3=(Token)match(input,12,FOLLOW_12_in_ruleRule274); 

                        	newLeafNode(otherlv_3, grammarAccess.getRuleAccess().getColonKeyword_2_0());
                        

                    }
                    break;
                case 2 :
                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:160:7: otherlv_4= '::='
                    {
                    otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleRule292); 

                        	newLeafNode(otherlv_4, grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2_1());
                        

                    }
                    break;

            }

            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:164:2: ( (lv_rhs_5_0= ruleRHS ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:165:1: (lv_rhs_5_0= ruleRHS )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:165:1: (lv_rhs_5_0= ruleRHS )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:166:3: lv_rhs_5_0= ruleRHS
            {
             
            	        newCompositeNode(grammarAccess.getRuleAccess().getRhsRHSParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleRHS_in_ruleRule314);
            lv_rhs_5_0=ruleRHS();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRuleRule());
            	        }
                   		set(
                   			current, 
                   			"rhs",
                    		lv_rhs_5_0, 
                    		"RHS");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,14,FOLLOW_14_in_ruleRule326); 

                	newLeafNode(otherlv_6, grammarAccess.getRuleAccess().getFullStopKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRule"


    // $ANTLR start "entryRuleRHS"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:194:1: entryRuleRHS returns [EObject current=null] : iv_ruleRHS= ruleRHS EOF ;
    public final EObject entryRuleRHS() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRHS = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:195:2: (iv_ruleRHS= ruleRHS EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:196:2: iv_ruleRHS= ruleRHS EOF
            {
             newCompositeNode(grammarAccess.getRHSRule()); 
            pushFollow(FOLLOW_ruleRHS_in_entryRuleRHS362);
            iv_ruleRHS=ruleRHS();

            state._fsp--;

             current =iv_ruleRHS; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRHS372); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRHS"


    // $ANTLR start "ruleRHS"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:203:1: ruleRHS returns [EObject current=null] : (this_ALT_0= ruleALT ( (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) ) )* ) ;
    public final EObject ruleRHS() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject this_ALT_0 = null;

        EObject lv_terminalOrLiteral_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:206:28: ( (this_ALT_0= ruleALT ( (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) ) )* ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:207:1: (this_ALT_0= ruleALT ( (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) ) )* )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:207:1: (this_ALT_0= ruleALT ( (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) ) )* )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:208:5: this_ALT_0= ruleALT ( (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) ) )*
            {
             
                    newCompositeNode(grammarAccess.getRHSAccess().getALTParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleALT_in_ruleRHS419);
            this_ALT_0=ruleALT();

            state._fsp--;

             
                    current = this_ALT_0; 
                    afterParserOrEnumRuleCall();
                
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:216:1: ( (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) ) )*
            loop5:
            do {
                int alt5=2;
                int LA5_0 = input.LA(1);

                if ( ((LA5_0>=15 && LA5_0<=16)) ) {
                    alt5=1;
                }


                switch (alt5) {
            	case 1 :
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:216:2: (otherlv_1= '//' | otherlv_2= '||' ) ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:216:2: (otherlv_1= '//' | otherlv_2= '||' )
            	    int alt4=2;
            	    int LA4_0 = input.LA(1);

            	    if ( (LA4_0==15) ) {
            	        alt4=1;
            	    }
            	    else if ( (LA4_0==16) ) {
            	        alt4=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 4, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt4) {
            	        case 1 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:216:4: otherlv_1= '//'
            	            {
            	            otherlv_1=(Token)match(input,15,FOLLOW_15_in_ruleRHS432); 

            	                	newLeafNode(otherlv_1, grammarAccess.getRHSAccess().getSolidusSolidusKeyword_1_0_0());
            	                

            	            }
            	            break;
            	        case 2 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:221:7: otherlv_2= '||'
            	            {
            	            otherlv_2=(Token)match(input,16,FOLLOW_16_in_ruleRHS450); 

            	                	newLeafNode(otherlv_2, grammarAccess.getRHSAccess().getVerticalLineVerticalLineKeyword_1_0_1());
            	                

            	            }
            	            break;

            	    }

            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:225:2: ( (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral ) )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:226:1: (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:226:1: (lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:227:3: lv_terminalOrLiteral_3_0= ruleTerminalOrLiteral
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRHSAccess().getTerminalOrLiteralTerminalOrLiteralParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleTerminalOrLiteral_in_ruleRHS472);
            	    lv_terminalOrLiteral_3_0=ruleTerminalOrLiteral();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRHSRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"terminalOrLiteral",
            	            		lv_terminalOrLiteral_3_0, 
            	            		"TerminalOrLiteral");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop5;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRHS"


    // $ANTLR start "entryRuleALT"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:251:1: entryRuleALT returns [EObject current=null] : iv_ruleALT= ruleALT EOF ;
    public final EObject entryRuleALT() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleALT = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:252:2: (iv_ruleALT= ruleALT EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:253:2: iv_ruleALT= ruleALT EOF
            {
             newCompositeNode(grammarAccess.getALTRule()); 
            pushFollow(FOLLOW_ruleALT_in_entryRuleALT510);
            iv_ruleALT=ruleALT();

            state._fsp--;

             current =iv_ruleALT; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleALT520); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleALT"


    // $ANTLR start "ruleALT"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:260:1: ruleALT returns [EObject current=null] : ( ( (lv_elementList_0_0= ruleElemList ) ) ( (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) ) )* ) ;
    public final EObject ruleALT() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_elementList_0_0 = null;

        EObject lv_elementList_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:263:28: ( ( ( (lv_elementList_0_0= ruleElemList ) ) ( (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) ) )* ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:264:1: ( ( (lv_elementList_0_0= ruleElemList ) ) ( (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) ) )* )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:264:1: ( ( (lv_elementList_0_0= ruleElemList ) ) ( (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) ) )* )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:264:2: ( (lv_elementList_0_0= ruleElemList ) ) ( (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) ) )*
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:264:2: ( (lv_elementList_0_0= ruleElemList ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:265:1: (lv_elementList_0_0= ruleElemList )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:265:1: (lv_elementList_0_0= ruleElemList )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:266:3: lv_elementList_0_0= ruleElemList
            {
             
            	        newCompositeNode(grammarAccess.getALTAccess().getElementListElemListParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleElemList_in_ruleALT566);
            lv_elementList_0_0=ruleElemList();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getALTRule());
            	        }
                   		add(
                   			current, 
                   			"elementList",
                    		lv_elementList_0_0, 
                    		"ElemList");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:282:2: ( (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( ((LA7_0>=17 && LA7_0<=18)) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:282:3: (otherlv_1= '/' | otherlv_2= '|' ) ( (lv_elementList_3_0= ruleElemList ) )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:282:3: (otherlv_1= '/' | otherlv_2= '|' )
            	    int alt6=2;
            	    int LA6_0 = input.LA(1);

            	    if ( (LA6_0==17) ) {
            	        alt6=1;
            	    }
            	    else if ( (LA6_0==18) ) {
            	        alt6=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 6, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt6) {
            	        case 1 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:282:5: otherlv_1= '/'
            	            {
            	            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleALT580); 

            	                	newLeafNode(otherlv_1, grammarAccess.getALTAccess().getSolidusKeyword_1_0_0());
            	                

            	            }
            	            break;
            	        case 2 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:287:7: otherlv_2= '|'
            	            {
            	            otherlv_2=(Token)match(input,18,FOLLOW_18_in_ruleALT598); 

            	                	newLeafNode(otherlv_2, grammarAccess.getALTAccess().getVerticalLineKeyword_1_0_1());
            	                

            	            }
            	            break;

            	    }

            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:291:2: ( (lv_elementList_3_0= ruleElemList ) )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:292:1: (lv_elementList_3_0= ruleElemList )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:292:1: (lv_elementList_3_0= ruleElemList )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:293:3: lv_elementList_3_0= ruleElemList
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getALTAccess().getElementListElemListParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleElemList_in_ruleALT620);
            	    lv_elementList_3_0=ruleElemList();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getALTRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elementList",
            	            		lv_elementList_3_0, 
            	            		"ElemList");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleALT"


    // $ANTLR start "entryRuleElemList"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:317:1: entryRuleElemList returns [EObject current=null] : iv_ruleElemList= ruleElemList EOF ;
    public final EObject entryRuleElemList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElemList = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:318:2: (iv_ruleElemList= ruleElemList EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:319:2: iv_ruleElemList= ruleElemList EOF
            {
             newCompositeNode(grammarAccess.getElemListRule()); 
            pushFollow(FOLLOW_ruleElemList_in_entryRuleElemList658);
            iv_ruleElemList=ruleElemList();

            state._fsp--;

             current =iv_ruleElemList; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleElemList668); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElemList"


    // $ANTLR start "ruleElemList"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:326:1: ruleElemList returns [EObject current=null] : ( ( ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) ) | (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' ) | (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' ) | (otherlv_7= '*' | otherlv_8= '+' ) ) | (otherlv_9= '&' this_STRING_10= RULE_STRING ) | ( (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) ) ) )* ;
    public final EObject ruleElemList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token this_STRING_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        EObject lv_terminalOrLiteral_0_0 = null;

        EObject lv_rhs_2_0 = null;

        EObject lv_rhs_5_0 = null;

        EObject lv_terminalOrLiteral_13_0 = null;


         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:329:28: ( ( ( ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) ) | (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' ) | (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' ) | (otherlv_7= '*' | otherlv_8= '+' ) ) | (otherlv_9= '&' this_STRING_10= RULE_STRING ) | ( (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) ) ) )* )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:330:1: ( ( ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) ) | (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' ) | (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' ) | (otherlv_7= '*' | otherlv_8= '+' ) ) | (otherlv_9= '&' this_STRING_10= RULE_STRING ) | ( (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) ) ) )*
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:330:1: ( ( ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) ) | (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' ) | (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' ) | (otherlv_7= '*' | otherlv_8= '+' ) ) | (otherlv_9= '&' this_STRING_10= RULE_STRING ) | ( (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) ) ) )*
            loop11:
            do {
                int alt11=4;
                switch ( input.LA(1) ) {
                case RULE_ID:
                case RULE_STRING:
                case 19:
                case 21:
                case 23:
                case 24:
                    {
                    alt11=1;
                    }
                    break;
                case 25:
                    {
                    alt11=2;
                    }
                    break;
                case 26:
                case 27:
                    {
                    alt11=3;
                    }
                    break;

                }

                switch (alt11) {
            	case 1 :
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:330:2: ( ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) ) | (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' ) | (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' ) | (otherlv_7= '*' | otherlv_8= '+' ) )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:330:2: ( ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) ) | (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' ) | (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' ) | (otherlv_7= '*' | otherlv_8= '+' ) )
            	    int alt9=4;
            	    switch ( input.LA(1) ) {
            	    case RULE_ID:
            	    case RULE_STRING:
            	        {
            	        alt9=1;
            	        }
            	        break;
            	    case 19:
            	        {
            	        alt9=2;
            	        }
            	        break;
            	    case 21:
            	        {
            	        alt9=3;
            	        }
            	        break;
            	    case 23:
            	    case 24:
            	        {
            	        alt9=4;
            	        }
            	        break;
            	    default:
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 9, 0, input);

            	        throw nvae;
            	    }

            	    switch (alt9) {
            	        case 1 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:330:3: ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:330:3: ( (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral ) )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:331:1: (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:331:1: (lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:332:3: lv_terminalOrLiteral_0_0= ruleTerminalOrLiteral
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getElemListAccess().getTerminalOrLiteralTerminalOrLiteralParserRuleCall_0_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleTerminalOrLiteral_in_ruleElemList715);
            	            lv_terminalOrLiteral_0_0=ruleTerminalOrLiteral();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getElemListRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"terminalOrLiteral",
            	                    		lv_terminalOrLiteral_0_0, 
            	                    		"TerminalOrLiteral");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:349:6: (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:349:6: (otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']' )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:349:8: otherlv_1= '[' ( (lv_rhs_2_0= ruleRHS ) ) otherlv_3= ']'
            	            {
            	            otherlv_1=(Token)match(input,19,FOLLOW_19_in_ruleElemList734); 

            	                	newLeafNode(otherlv_1, grammarAccess.getElemListAccess().getLeftSquareBracketKeyword_0_1_0());
            	                
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:353:1: ( (lv_rhs_2_0= ruleRHS ) )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:354:1: (lv_rhs_2_0= ruleRHS )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:354:1: (lv_rhs_2_0= ruleRHS )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:355:3: lv_rhs_2_0= ruleRHS
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getElemListAccess().getRhsRHSParserRuleCall_0_1_1_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleRHS_in_ruleElemList755);
            	            lv_rhs_2_0=ruleRHS();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getElemListRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"rhs",
            	                    		lv_rhs_2_0, 
            	                    		"RHS");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }

            	            otherlv_3=(Token)match(input,20,FOLLOW_20_in_ruleElemList767); 

            	                	newLeafNode(otherlv_3, grammarAccess.getElemListAccess().getRightSquareBracketKeyword_0_1_2());
            	                

            	            }


            	            }
            	            break;
            	        case 3 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:376:6: (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:376:6: (otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')' )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:376:8: otherlv_4= '(' ( (lv_rhs_5_0= ruleRHS ) ) otherlv_6= ')'
            	            {
            	            otherlv_4=(Token)match(input,21,FOLLOW_21_in_ruleElemList787); 

            	                	newLeafNode(otherlv_4, grammarAccess.getElemListAccess().getLeftParenthesisKeyword_0_2_0());
            	                
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:380:1: ( (lv_rhs_5_0= ruleRHS ) )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:381:1: (lv_rhs_5_0= ruleRHS )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:381:1: (lv_rhs_5_0= ruleRHS )
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:382:3: lv_rhs_5_0= ruleRHS
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getElemListAccess().getRhsRHSParserRuleCall_0_2_1_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleRHS_in_ruleElemList808);
            	            lv_rhs_5_0=ruleRHS();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getElemListRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"rhs",
            	                    		lv_rhs_5_0, 
            	                    		"RHS");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }

            	            otherlv_6=(Token)match(input,22,FOLLOW_22_in_ruleElemList820); 

            	                	newLeafNode(otherlv_6, grammarAccess.getElemListAccess().getRightParenthesisKeyword_0_2_2());
            	                

            	            }


            	            }
            	            break;
            	        case 4 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:403:6: (otherlv_7= '*' | otherlv_8= '+' )
            	            {
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:403:6: (otherlv_7= '*' | otherlv_8= '+' )
            	            int alt8=2;
            	            int LA8_0 = input.LA(1);

            	            if ( (LA8_0==23) ) {
            	                alt8=1;
            	            }
            	            else if ( (LA8_0==24) ) {
            	                alt8=2;
            	            }
            	            else {
            	                NoViableAltException nvae =
            	                    new NoViableAltException("", 8, 0, input);

            	                throw nvae;
            	            }
            	            switch (alt8) {
            	                case 1 :
            	                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:403:8: otherlv_7= '*'
            	                    {
            	                    otherlv_7=(Token)match(input,23,FOLLOW_23_in_ruleElemList840); 

            	                        	newLeafNode(otherlv_7, grammarAccess.getElemListAccess().getAsteriskKeyword_0_3_0());
            	                        

            	                    }
            	                    break;
            	                case 2 :
            	                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:408:7: otherlv_8= '+'
            	                    {
            	                    otherlv_8=(Token)match(input,24,FOLLOW_24_in_ruleElemList858); 

            	                        	newLeafNode(otherlv_8, grammarAccess.getElemListAccess().getPlusSignKeyword_0_3_1());
            	                        

            	                    }
            	                    break;

            	            }


            	            }
            	            break;

            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:413:6: (otherlv_9= '&' this_STRING_10= RULE_STRING )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:413:6: (otherlv_9= '&' this_STRING_10= RULE_STRING )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:413:8: otherlv_9= '&' this_STRING_10= RULE_STRING
            	    {
            	    otherlv_9=(Token)match(input,25,FOLLOW_25_in_ruleElemList879); 

            	        	newLeafNode(otherlv_9, grammarAccess.getElemListAccess().getAmpersandKeyword_1_0());
            	        
            	    this_STRING_10=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleElemList890); 
            	     
            	        newLeafNode(this_STRING_10, grammarAccess.getElemListAccess().getSTRINGTerminalRuleCall_1_1()); 
            	        

            	    }


            	    }
            	    break;
            	case 3 :
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:422:6: ( (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) ) )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:422:6: ( (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) ) )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:422:7: (otherlv_11= '$' | otherlv_12= '@' ) ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:422:7: (otherlv_11= '$' | otherlv_12= '@' )
            	    int alt10=2;
            	    int LA10_0 = input.LA(1);

            	    if ( (LA10_0==26) ) {
            	        alt10=1;
            	    }
            	    else if ( (LA10_0==27) ) {
            	        alt10=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 10, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt10) {
            	        case 1 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:422:9: otherlv_11= '$'
            	            {
            	            otherlv_11=(Token)match(input,26,FOLLOW_26_in_ruleElemList910); 

            	                	newLeafNode(otherlv_11, grammarAccess.getElemListAccess().getDollarSignKeyword_2_0_0());
            	                

            	            }
            	            break;
            	        case 2 :
            	            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:427:7: otherlv_12= '@'
            	            {
            	            otherlv_12=(Token)match(input,27,FOLLOW_27_in_ruleElemList928); 

            	                	newLeafNode(otherlv_12, grammarAccess.getElemListAccess().getCommercialAtKeyword_2_0_1());
            	                

            	            }
            	            break;

            	    }

            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:431:2: ( (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral ) )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:432:1: (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral )
            	    {
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:432:1: (lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral )
            	    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:433:3: lv_terminalOrLiteral_13_0= ruleTerminalOrLiteral
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getElemListAccess().getTerminalOrLiteralTerminalOrLiteralParserRuleCall_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleTerminalOrLiteral_in_ruleElemList950);
            	    lv_terminalOrLiteral_13_0=ruleTerminalOrLiteral();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getElemListRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"terminalOrLiteral",
            	            		lv_terminalOrLiteral_13_0, 
            	            		"TerminalOrLiteral");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElemList"


    // $ANTLR start "entryRuleTerminalOrLiteral"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:457:1: entryRuleTerminalOrLiteral returns [EObject current=null] : iv_ruleTerminalOrLiteral= ruleTerminalOrLiteral EOF ;
    public final EObject entryRuleTerminalOrLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTerminalOrLiteral = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:458:2: (iv_ruleTerminalOrLiteral= ruleTerminalOrLiteral EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:459:2: iv_ruleTerminalOrLiteral= ruleTerminalOrLiteral EOF
            {
             newCompositeNode(grammarAccess.getTerminalOrLiteralRule()); 
            pushFollow(FOLLOW_ruleTerminalOrLiteral_in_entryRuleTerminalOrLiteral988);
            iv_ruleTerminalOrLiteral=ruleTerminalOrLiteral();

            state._fsp--;

             current =iv_ruleTerminalOrLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTerminalOrLiteral998); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTerminalOrLiteral"


    // $ANTLR start "ruleTerminalOrLiteral"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:466:1: ruleTerminalOrLiteral returns [EObject current=null] : (this_Reference_0= ruleReference | this_Literal_1= ruleLiteral ) ;
    public final EObject ruleTerminalOrLiteral() throws RecognitionException {
        EObject current = null;

        EObject this_Reference_0 = null;

        EObject this_Literal_1 = null;


         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:469:28: ( (this_Reference_0= ruleReference | this_Literal_1= ruleLiteral ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:470:1: (this_Reference_0= ruleReference | this_Literal_1= ruleLiteral )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:470:1: (this_Reference_0= ruleReference | this_Literal_1= ruleLiteral )
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==RULE_ID) ) {
                alt12=1;
            }
            else if ( (LA12_0==RULE_STRING) ) {
                alt12=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 12, 0, input);

                throw nvae;
            }
            switch (alt12) {
                case 1 :
                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:471:5: this_Reference_0= ruleReference
                    {
                     
                            newCompositeNode(grammarAccess.getTerminalOrLiteralAccess().getReferenceParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleReference_in_ruleTerminalOrLiteral1045);
                    this_Reference_0=ruleReference();

                    state._fsp--;

                     
                            current = this_Reference_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:481:5: this_Literal_1= ruleLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getTerminalOrLiteralAccess().getLiteralParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleLiteral_in_ruleTerminalOrLiteral1072);
                    this_Literal_1=ruleLiteral();

                    state._fsp--;

                     
                            current = this_Literal_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTerminalOrLiteral"


    // $ANTLR start "entryRuleReference"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:497:1: entryRuleReference returns [EObject current=null] : iv_ruleReference= ruleReference EOF ;
    public final EObject entryRuleReference() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReference = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:498:2: (iv_ruleReference= ruleReference EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:499:2: iv_ruleReference= ruleReference EOF
            {
             newCompositeNode(grammarAccess.getReferenceRule()); 
            pushFollow(FOLLOW_ruleReference_in_entryRuleReference1107);
            iv_ruleReference=ruleReference();

            state._fsp--;

             current =iv_ruleReference; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReference1117); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReference"


    // $ANTLR start "ruleReference"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:506:1: ruleReference returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleReference() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:509:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:510:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:510:1: ( (otherlv_0= RULE_ID ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:511:1: (otherlv_0= RULE_ID )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:511:1: (otherlv_0= RULE_ID )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:512:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getReferenceRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleReference1161); 

            		newLeafNode(otherlv_0, grammarAccess.getReferenceAccess().getRefTokenNameCrossReference_0()); 
            	

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReference"


    // $ANTLR start "entryRuleLiteral"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:531:1: entryRuleLiteral returns [EObject current=null] : iv_ruleLiteral= ruleLiteral EOF ;
    public final EObject entryRuleLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteral = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:532:2: (iv_ruleLiteral= ruleLiteral EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:533:2: iv_ruleLiteral= ruleLiteral EOF
            {
             newCompositeNode(grammarAccess.getLiteralRule()); 
            pushFollow(FOLLOW_ruleLiteral_in_entryRuleLiteral1196);
            iv_ruleLiteral=ruleLiteral();

            state._fsp--;

             current =iv_ruleLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLiteral1206); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLiteral"


    // $ANTLR start "ruleLiteral"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:540:1: ruleLiteral returns [EObject current=null] : ( (lv_ref_0_0= RULE_STRING ) ) ;
    public final EObject ruleLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_ref_0_0=null;

         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:543:28: ( ( (lv_ref_0_0= RULE_STRING ) ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:544:1: ( (lv_ref_0_0= RULE_STRING ) )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:544:1: ( (lv_ref_0_0= RULE_STRING ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:545:1: (lv_ref_0_0= RULE_STRING )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:545:1: (lv_ref_0_0= RULE_STRING )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:546:3: lv_ref_0_0= RULE_STRING
            {
            lv_ref_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleLiteral1247); 

            			newLeafNode(lv_ref_0_0, grammarAccess.getLiteralAccess().getRefSTRINGTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getLiteralRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"ref",
                    		lv_ref_0_0, 
                    		"STRING");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLiteral"


    // $ANTLR start "entryRuleNonTerminal"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:570:1: entryRuleNonTerminal returns [EObject current=null] : iv_ruleNonTerminal= ruleNonTerminal EOF ;
    public final EObject entryRuleNonTerminal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNonTerminal = null;


        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:571:2: (iv_ruleNonTerminal= ruleNonTerminal EOF )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:572:2: iv_ruleNonTerminal= ruleNonTerminal EOF
            {
             newCompositeNode(grammarAccess.getNonTerminalRule()); 
            pushFollow(FOLLOW_ruleNonTerminal_in_entryRuleNonTerminal1287);
            iv_ruleNonTerminal=ruleNonTerminal();

            state._fsp--;

             current =iv_ruleNonTerminal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNonTerminal1297); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNonTerminal"


    // $ANTLR start "ruleNonTerminal"
    // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:579:1: ruleNonTerminal returns [EObject current=null] : ( (lv_name_0_0= RULE_ID ) ) ;
    public final EObject ruleNonTerminal() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;

         enterRule(); 
            
        try {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:582:28: ( ( (lv_name_0_0= RULE_ID ) ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:583:1: ( (lv_name_0_0= RULE_ID ) )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:583:1: ( (lv_name_0_0= RULE_ID ) )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:584:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:584:1: (lv_name_0_0= RULE_ID )
            // ../de.sabram.upb.specs.con/src-gen/de/sabram/upb/specs/parser/antlr/internal/InternalCon.g:585:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNonTerminal1338); 

            			newLeafNode(lv_name_0_0, grammarAccess.getNonTerminalAccess().getNameIDTerminalRuleCall_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNonTerminalRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"ID");
            	    

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNonTerminal"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleConSpec_in_entryRuleConSpec81 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConSpec91 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRule_in_ruleConSpec140 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleRule_in_entryRuleRule180 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRule190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRule227 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_11_in_ruleRule238 = new BitSet(new long[]{0x0000000000003010L});
    public static final BitSet FOLLOW_ruleNonTerminal_in_ruleRule261 = new BitSet(new long[]{0x0000000000003000L});
    public static final BitSet FOLLOW_12_in_ruleRule274 = new BitSet(new long[]{0x000000000FAE0030L});
    public static final BitSet FOLLOW_13_in_ruleRule292 = new BitSet(new long[]{0x000000000FAE0030L});
    public static final BitSet FOLLOW_ruleRHS_in_ruleRule314 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleRule326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRHS_in_entryRuleRHS362 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRHS372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleALT_in_ruleRHS419 = new BitSet(new long[]{0x0000000000018002L});
    public static final BitSet FOLLOW_15_in_ruleRHS432 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_16_in_ruleRHS450 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleTerminalOrLiteral_in_ruleRHS472 = new BitSet(new long[]{0x0000000000018002L});
    public static final BitSet FOLLOW_ruleALT_in_entryRuleALT510 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleALT520 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElemList_in_ruleALT566 = new BitSet(new long[]{0x0000000000060002L});
    public static final BitSet FOLLOW_17_in_ruleALT580 = new BitSet(new long[]{0x000000000FAE0030L});
    public static final BitSet FOLLOW_18_in_ruleALT598 = new BitSet(new long[]{0x000000000FAE0030L});
    public static final BitSet FOLLOW_ruleElemList_in_ruleALT620 = new BitSet(new long[]{0x0000000000060002L});
    public static final BitSet FOLLOW_ruleElemList_in_entryRuleElemList658 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElemList668 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTerminalOrLiteral_in_ruleElemList715 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_19_in_ruleElemList734 = new BitSet(new long[]{0x000000000FAE0030L});
    public static final BitSet FOLLOW_ruleRHS_in_ruleElemList755 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleElemList767 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_21_in_ruleElemList787 = new BitSet(new long[]{0x000000000FAE0030L});
    public static final BitSet FOLLOW_ruleRHS_in_ruleElemList808 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleElemList820 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_23_in_ruleElemList840 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_24_in_ruleElemList858 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_25_in_ruleElemList879 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleElemList890 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_26_in_ruleElemList910 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_27_in_ruleElemList928 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleTerminalOrLiteral_in_ruleElemList950 = new BitSet(new long[]{0x000000000FA80032L});
    public static final BitSet FOLLOW_ruleTerminalOrLiteral_in_entryRuleTerminalOrLiteral988 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTerminalOrLiteral998 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReference_in_ruleTerminalOrLiteral1045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_ruleTerminalOrLiteral1072 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReference_in_entryRuleReference1107 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReference1117 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleReference1161 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_entryRuleLiteral1196 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLiteral1206 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleLiteral1247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNonTerminal_in_entryRuleNonTerminal1287 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNonTerminal1297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNonTerminal1338 = new BitSet(new long[]{0x0000000000000002L});

}